package com.dsunsoft.rtu.core.base;

import com.dsunsoft.rtu.common.entity.BaseEntity;
import com.dsunsoft.rtu.common.entity.BaseQuery;

import java.util.List;

/**
 * BaseMapper
 *
 * @param <E> BaseEntity
 * @param <Q> BaseQuery
 * @author ygm
 */
public interface BaseMapper<E extends BaseEntity, Q extends BaseQuery> {

    /**
     * 通过id获取数据
     *
     * @param id 主键id
     * @return 对象
     */
    E selectById(String id);

    /**
     * 查询数据列表
     *
     * @param query 查询对象
     * @return list
     */
    List<E> selectList(Q query);

    /**
     * 统计
     * @param entity entity
     * @return Long
     */
    int selectCount(E entity);

    /**
     * 新增
     *
     * @param entity entity
     * @return int
     */
    int insert(E entity);

    /**
     * 修改
     *
     * @param entity 对象
     * @return int
     */
    int update(E entity);

    /**
     * 删除
     *
     * @param id 主键id
     * @return int
     */
    int deleteById(String id);
}